home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpuzzles.3 / xpuzzles / xpuzzles-5.3.1 / xskewb / SkewbP.h < prev    next >
C/C++ Source or Header  |  1996-02-05  |  4KB  |  166 lines

  1. /*
  2. # X-BASED SKEWB
  3. #
  4. #  SkewbP.h
  5. #
  6. ###
  7. #
  8. #  Copyright (c) 1994 - 96    David Albert Bagley, bagleyd@hertz.njit.edu
  9. #
  10. #                   All Rights Reserved
  11. #
  12. #  Permission to use, copy, modify, and distribute this software and
  13. #  its documentation for any purpose and without fee is hereby granted,
  14. #  provided that the above copyright notice appear in all copies and
  15. #  that both that copyright notice and this permission notice appear in
  16. #  supporting documentation, and that the name of the author not be
  17. #  used in advertising or publicity pertaining to distribution of the
  18. #  software without specific, written prior permission.
  19. #
  20. #  This program is distributed in the hope that it will be "playable",
  21. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  23. #
  24. */
  25.  
  26. /* Private header file for Skewb */
  27.  
  28. #ifndef _SkewbP_h
  29. #define _SkewbP_h
  30.  
  31. #include "Skewb.h"
  32.  
  33. /*** random number generator ***/
  34. /* insert your favorite */
  35. extern void SetRNG();
  36. extern long LongRNG();
  37. #define SRAND(X) SetRNG((long) X)
  38. #define LRAND() LongRNG()
  39.  
  40. #define NRAND(X) ((int)(LRAND()%(X)))
  41.  
  42. #define SYMBOL ':'
  43.  
  44. #define IGNORE (-1)
  45. #define TR 0
  46. #define BR 1
  47. #define BL 2
  48. #define TL 3
  49. #define STRT 4
  50. #define CW 5
  51. #define HALF 6
  52. #define CCW 7
  53. #define TOP 8
  54. #define RIGHT 9
  55. #define BOTTOM 10
  56. #define LEFT 11
  57. #define MAXORIENT 4
  58. #define MAXROTATE 3
  59. #define MAXCUBES (MAXORIENT+1)
  60. #define MINOR 0
  61. #define MAJOR 1
  62.  
  63. /* The following is in xskewb.c also */
  64. #define MAXFACES 6
  65.  
  66. #define MIN(a,b) (((int)(a)<(int)(b))?(int)(a):(int)(b))
  67. #define MAX(a,b) (((int)(a)>(int)(b))?(int)(a):(int)(b))
  68.  
  69. typedef struct _SkewbLoc
  70. {
  71.   int face, rotation;
  72. } SkewbLoc;
  73.  
  74. typedef struct _SkewbLocPos
  75. {
  76.   int face, position, direction;
  77. } SkewbLocPos;
  78.  
  79. typedef struct _SkewbPart
  80. {
  81.   Pixel foreground;
  82.   Pixel borderColor;
  83.   Pixel faceColor[MAXFACES];
  84.   SkewbLoc cubeLoc[MAXFACES][MAXCUBES];
  85.   SkewbLoc faceLoc[MAXCUBES];
  86.   SkewbLoc rowLoc[MAXORIENT][MAXCUBES];
  87.   SkewbLoc minorLoc[MAXORIENT], majorLoc[MAXORIENT][MAXORIENT];
  88.   int currentFace, currentPosition, currentDirection;
  89.   Boolean started, practice, orient, vertical, mono;
  90.   int dim; /* This allows us to reuse code between 2d and 3d */
  91.   int depth;
  92.   Position delta;
  93.   Position orientLineLength;
  94.   XPoint puzzleSize;
  95.   XPoint puzzleOffset, letterOffset;
  96.   GC puzzleGC;
  97.   GC borderGC;
  98.   GC faceGC[MAXFACES];
  99.   GC inverseGC;
  100.   String faceName[MAXFACES];
  101.   XtCallbackList select;
  102.   SkewbLoc skewbLoc[MAXFACES][MAXCUBES];
  103. } SkewbPart;
  104.  
  105. typedef struct _SkewbRec
  106. {
  107.   CorePart core;
  108.   SkewbPart skewb;
  109. } SkewbRec;
  110.  
  111. /* This gets around C's inability to do inheritance */
  112. typedef struct _SkewbClassPart
  113. {
  114.   int ignore;
  115. } SkewbClassPart;
  116.  
  117. typedef struct _SkewbClassRec
  118. {
  119.   CoreClassPart core_class;
  120.   SkewbClassPart skewb_class;
  121. } SkewbClassRec;
  122.  
  123. typedef struct _RowNext
  124. {
  125.   int face, direction, sideFace;
  126. } RowNext;
  127.  
  128. extern SkewbClassRec skewbClassRec;
  129.  
  130. extern void QuitSkewb();
  131. extern void PracticeSkewb();
  132. extern void PracticeSkewbMaybe();
  133. extern void RandomizeSkewb();
  134. extern void RandomizeSkewbMaybe();
  135. extern void GetSkewb();
  136. extern void WriteSkewb();
  137. extern void UndoSkewb();
  138. extern void SolveSkewb();
  139. extern void OrientizeSkewb();
  140. extern void MoveSkewbCw();
  141. extern void MoveSkewbCcw();
  142. extern void MoveSkewbInput();
  143. extern void MoveSkewb();
  144. extern void SelectSkewb();
  145. extern void ReleaseSkewb();
  146. /*extern void SolvePolyhedrons();*/
  147. extern void DrawAllPolyhedrons();
  148. extern Boolean CheckSolved();
  149. extern void InitMoves();
  150. extern void PutMove();
  151. extern void GetMove();
  152. extern int MadeMoves();
  153. extern void FlushMoves();
  154. extern int NumMoves();
  155. extern void ScanMoves();
  156. extern void PrintMoves();
  157. extern void ScanStartPosition();
  158. extern void PrintStartPosition();
  159. extern void SetStartPosition();
  160.  
  161. #ifdef DEBUG
  162. extern void PrintCube();
  163. #endif
  164.  
  165. #endif /* _SkewbP_h */
  166.